package udg.useDefAnalysis.environments;
import java.util.LinkedList;
import udg.ASTProvider;
public class UnaryOpEnvironment extends EmitUseEnvironment
{
public void addChildSymbols(LinkedList<String> childSymbols,
ASTProvider child)
{
String codeStr = astProvider.getEscapedCodeStr();
if(codeStr != null && codeStr.startsWith("&")){
for(String symbol : childSymbols){
symbols.add("& " + symbol);
}
return;
}
if(codeStr == null|| !codeStr.startsWith("*")){
symbols.addAll(childSymbols);
return;
}
LinkedList<String> retval = new LinkedList<String>();
// emit all symbols as '* symbol'
LinkedList<String> derefedChildren = new LinkedList<String>();
for(String c : childSymbols){
derefedChildren.add("* " + c);
}
retval.addAll(derefedChildren);
// emit entire code string
retval.add(codeStr);
useSymbols.addAll(childSymbols);
symbols.addAll(retval);
}
}